'''
def stack_dfs():
    S, Q = set(), [[st]]
    while Q:
        s = Q.pop()
        u = s[-1]
        if u == ed:
            global count
            count += 1
        for i in range(4):
            tx,ty=u[0]+xx[i],u[1]+yy[i]
            if tx>=0 and tx<n and ty>=0 and ty<m and a[tx][ty]!='#' and (tx, ty) not in s:
                tmp = s.copy()
                tmp.append((tx, ty))
                Q.append(tmp)

n,m=map(int,input().split())
xx=[0,1,-1,0]
yy=[1,0,0,-1]
a=[]
for i in range(n):
    a.append(list(input()))
for i in range(n):
    for j in range(m):
        if a[i][j] == 'S': st = (i, j)
        elif a[i][j] == 'T': ed = (i, j)
count = 0
stack_dfs()
print(count)
栈dfs，超时！
'''
'''
def dfs(x,y):
    a_[x][y]=False
    if a[x][y]=='T':
        global count
        count+=1
        return
    for i in range(4):
        tx,ty=x+xx[i],y+yy[i]
        if tx>=0 and tx<n and ty>=0 and ty<m and a[tx][ty]!='#' and a_[tx][ty]:
            dfs(tx,ty)
            a_[tx][ty]=True


n,m=map(int,input().split())
xx=[0,1,-1,0]
yy=[1,0,0,-1]
a=[]
a_=[]
count=0
for i in range(n):
    a.append(list(input()))
    a_.append([True for i in range(m)])
for i in range(n):
    for j in range(m):
        if a[i][j]=='S':
            dfs(i,j)
            print(count)
            exit(0)
递归dfs，超时！
'''
# 又到了允悲python搜索题无解的时候了。呜呜呜
'''
不过踏青那题用栈版dfs做出来了，递归版没试
可能是因为栈虽然能轻松实现平面上走过的点不再重复走
却无法实现这个题的点可以重复走，而每条路的点不能重复走吧
强行实现也就是我这个的存下路径。。。
似乎还不如递归的速度。。
'''
'''
测了下，还是递归快一点。。。
不过，也差不太多。就是python处理得太慢了，唉。。
from threading import Thread
import time
def dfs(x,y):
    a_[x][y]=False
    global tim
    tim += 1
    if a[x][y]=='T':
        global count
        count+=1
        return
    for i in range(4):
        tx,ty=x+xx[i],y+yy[i]
        if tx>=0 and tx<n and ty>=0 and ty<m and a[tx][ty]!='#' and a_[tx][ty]:
            dfs(tx,ty)
            a_[tx][ty]=True

def pt():
    while True:
        time.sleep(1)
        print(tim)

n, m = map(int, input().split())
xx = [0, 1, -1, 0]
yy = [1, 0, 0, -1]
a = []
a_ = []
tim = 0
count = 0
Thread(target=pt).start()
for i in range(n):
    a.append(list(input()))
    a_.append([True for i in range(m)])
for i in range(n):
    for j in range(m):
        if a[i][j]=='S':
            dfs(i,j)
            print(count)
            exit(0)
'''
# -------------------------------------------------------------------------------

# 比赛环境为python3.8.6版本自带的IDLE，最好早点熟悉一下。。这个东西的提示时有时无

# 菜单栏最右边的Help的Python Docs 比赛时候也可以看，不过建议还是提前多了解了解，

# 比赛的时候至少知道在文档找什么能用的上。

# IDLE是下载Python时自带的，在按住win+s搜索IDLE就能搜到了。

# 然后点左上角的File可以创建新文件，然后按F5可以运行。
